1. Field of the Invention
The present invention relates to data communication systems. In particular, the present invention relates to novel and improved method, tunnel endpoint, system and computer program for recovering state information of a first tunnel endpoint of a point to point connection between the first tunnel endpoint and a second tunnel endpoint.
2. Description of the Related Art
Layer Two Tunneling Protocol (L2TP) is an extension of the Point-to-Point Tunneling Protocol (PPTP) used by an Internet service provider to enable the operation of a virtual private network over the Internet. FIG. 1 discloses the two main components that make up L2TP: the L2TP Access Concentrator (LAC) 10, which is the device that physically terminates a call and the L2TP Network Server (LNS) 14, which is the device that terminates and possibly authenticates the PPP stream. In FIG. 1, the LAC 12 and the LNS 14 are connected with each other via a data network 12, e.g. the Internet.
PPP defines a means of encapsulation to transmit multiprotocol packets over layer two (L2) point-to-point links. Generally, a user connects to a network access server (NAS) through Integrated Services Digital Network (ISDN), Asynchronous Digital Subscriber line (ADSL) or other service and runs PPP over that connection.
L2TP uses packet-switched network connections to make it possible for the endpoints to be located on different machines. The user has an L2 connection to an access concentrator, which then tunnels individual PPP frames to the NAS, so that the packets can be processed separately from the location of the circuit termination. This means that the connection can terminate at a local circuit concentrator, eliminating possible long-distance charges, among other benefits. From the user's point of view, there is no difference in the operation.
The L2TP is used for tunneling PPP connections over packet switched networks. For each PPP connection an L2TP session is established. Establishment includes state full signaling between L2TP endpoints. The signaling happens over a reliable control channel, the L2TP tunnel. The receiving end acknowledges messages. If the sender did not receive an acknowledgement, the message is retransmitted a number of times. If no acknowledgements are received the messages and the control channel timeouts, which results in teardown of the L2TP, tunnel and all sessions established over it. In a High Availability (HA) system, the state of the sessions and the tunnel should be backed up, for example, by another physical box.
For each L2TP tunnel both tunnel endpoints maintain two essential variables for sequence numbering of messages: Ns and Nr. Ns is the sequence number of the last sent message. Nr is the next sequence number expected to receive. Since establishment of an L2TP session involves sending and receiving of multiple messages it would be complex and resource consuming to back up the state of Ns and Nr variables for every message received and sent. Usually it is acceptable in a crash situation to restart establishment of sessions, which are in the middle of initial signaling when a crash occurs. But if the state of Nr and Ns variables cannot be recovered all sessions within the crashed tunnel are lost.
One solution to the afore-mentioned problem would be to maintain full state information for each session in both tunnel endpoints. Such a solution would, however, require support from both endpoints.